package com.qiulingcloud.commonsserver.exception.code;

/**
 * @Author：zhangqiang
 * @Description：
 * @Date：Created in 2:48 2020/2/8
 * @Modified By：
 */
public enum BaseResponseCode implements ResponseCodeInterface {

    /**
     * 这个要和前端约定好
     * code=10000：服务器已成功处理了请求。 通常，这表示服务器提供了请求的网页。
     * code=400xxxx：（效验异常） 传入数据效验异常
     * code=401xxxx：(账号异常) 登录退出一起的各种异常
     * code=402xxxx：没有权限禁止访问
     * code=403xxxx：iot引起的各种异常
     * code=5000001：系统异常
     */
    SUCCESS(10000, "操作成功"),
    ERROR(-9999, "系统异常"),
    INTERFACE_IS_LIMITATION(-1111, "接口限流"),

    SYSTEM_ERROR(5000001, "系统异常请稍后再试"),
    DOWNSTREAM_ERROR(5000002, "下游服务异常，请联系管理员"),

    //数据异常
    DATA_ERROR(4000001, "传入数据异常"),
    METHOD_IDENTITY_ERROR(4000002, "数据校验异常"),

    //设备异常
    EQUIPMENT_NOT_EXIST(4030001, "设备不存在"),
    SOCKET_CREATE_ERROR(4030002, "socket建立失败"),

    //账号异常
    ACCOUNT_ERROR(4010001, "该账号不存在"),
    ACCOUNT_LOCK(4010002, "该账号被锁定,请联系系统管理员"),
    ACCOUNT_PASSWORD_ERROR(4010003, "用户名密码不匹配"),
    ACCOUNT_LOCK_TIP(4010004, "该账号被锁定,请联系系统管理员"),
    REPETITION_LOGIN(4010005, "您的账号已在别处登录，请勿重复登录"),
    TOKEN_ERROR(4010006, "用户未登录，请重新登录"),
    TOKEN_NOT_NULL(4010007, "token 不能为空"),
    SHIRO_AUTHENTICATION_ERROR(4010008, "用户认证异常"),
    ACCOUNT_HAS_DELETED_ERROR(4010009, "该账号已被删除，请联系系统管理员"),
    TOKEN_PAST_DUE(4010010, "token失效,请刷新token"),
    NOT_PERMISSION(4010011, "没有权限访问该资源"),
    OLD_PASSWORD_ERROR(4010012, "旧密码不匹配"),
    ACCOUNT_IS_LOGIN(4010013, "该账号已经在别处登录，请重新登录"),

    //操作异常
    OPERATION_ERROR(4020001, "操作失败"),
    OPERATION_MENU_PERMISSION_CATALOG_ERROR(4020002, "操作后的菜单类型是目录，所属菜单必须为默认顶级菜单或者目录"),
    OPERATION_MENU_PERMISSION_MENU_ERROR(4020003, "操作后的菜单类型是菜单，所属菜单必须为目录类型"),
    OPERATION_MENU_PERMISSION_BTN_ERROR(4020004, "操作后的菜单类型是按钮，所属菜单必须为菜单类型"),
    OPERATION_MENU_PERMISSION_UPDATE(4020005, "操作的菜单权限存在子集关联不允许变更"),
    OPERATION_MENU_PERMISSION_URL_NOT_NULL(4020006, "菜单权限的url不能为空"),
    OPERATION_MENU_PERMISSION_URL_PERMS_NULL(4020007, "菜单权限的标识符不能为空"),
    OPERATION_MENU_PERMISSION_URL_METHOD_NULL(4020008, "菜单权限的请求方式不能为空"),
    ROLE_PERMISSION_RELATION(4020009, "该菜单权限存在子集关联，不允许删除"),
    NOT_PERMISSION_DELETED_DEPT(4020010, "该组织机构下还关联着用户，不允许删除"),
    NOT_PERMISSION_DELETED_EQUPMENT(4020011, "该设备下关联着其他可控设备，不允许删除"),
    OPERATION_MENU_PERMISSION_URL_CODE_NULL(4020012, "菜单权限的按钮标识不能为空"),



    ;


    /**
     * 响应码
     */
    private int code;

    /**
     * 提示
     */
    private String msg;

    BaseResponseCode(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    @Override
    public int getCode() {
        return code;
    }

    @Override
    public String getMsg() {
        return msg;
    }
}
